<!-- XHTML 1.0 Strict -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<meta name="author" content="Rachid Touzani" />
<meta name="keywords" content=" css, dropdowns, dropdown menu, drop-down, menu, navigation, nav, horizontal, vertical left-to-right, vertical right-to-left, horizontal linear, horizontal upwards, cross browser, internet explorer, ie, firefox, safari, opera, browser, lwis" />
<meta name="description" content="Clean, standards-friendly, modular framework for dropdown menus" />
<link href="../css/dropdown.vertical.css" media="screen" rel="stylesheet" type="text/css" />
<link href="../css/default.ultimate.css" media="screen" rel="stylesheet" type="text/css" />

<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Solid and Structural Mechanics Demo 5</title>
<link rel="stylesheet" type="text/css" href="../doxygen.css" />
<link rel="stylesheet" type="text/css" href="../tabs.css"  />
</head>

<body bgcolor="#FFFFFF" link="#FF0000" vlink="#FF00FF" alink="#FF00FF">
<p align="center"><a href="../index.html"><img src="../im/ofeli.gif" width="150" border="0"></a></p>

<center>
  <div id="cse" style="width: 60%;">Loading</div>
  <script src="http://www.google.com/jsapi" type="text/javascript"></script>
  <script type="text/javascript"> 
     google.load('search', '1', {language : 'en', style : google.loader.themes.SHINY});
     google.setOnLoadCallback(function() {
        var customSearchOptions = {};  var customSearchControl = new google.search.CustomSearchControl(
        '012396140824982761142:-qrywxcfi_o', customSearchOptions);
        customSearchControl.setResultSetSize(google.search.Search.FILTERED_CSE_RESULTSET);
        customSearchControl.draw('cse');
     }, true);
   </script>
   <style type="text/css">
     .gsc-control-cse {
     font-family: Verdana, sans-serif;
     border-color: #DAE0E5;
     background-color: #DAE0E5;
   }
   .gsc-control-cse .gsc-table-result { font-family: Verdana, sans-serif; }
   input.gsc-input { border-color: #B6BEC5; }
   input.gsc-search-button {
     border-color: #B6BEC5;
     background-color: #D0D1D4;
   }
   .gsc-tabHeader.gsc-tabhInactive {
     border-color: #999999;
     background-color: #EEEEEE;
   }
   .gsc-tabHeader.gsc-tabhActive {
     border-color: #999999;
     background-color: #999999;
   }
   .gsc-tabsArea { border-color: #999999; }
   .gsc-webResult.gsc-result,
   .gsc-results .gsc-imageResult {
     border-color: #FFFFFF;
     background-color: #FFFFFF;
   }
   .gsc-webResult.gsc-result:hover,
   .gsc-imageResult:hover {
     border-color: #D2D6DC;
     background-color: #EDEDED;
   }
   .gsc-webResult.gsc-result.gsc-promotion:hover {
     border-color: #D2D6DC;
     background-color: #EDEDED;
   }
   .gs-webResult.gs-result a.gs-title:link,
   .gs-webResult.gs-result a.gs-title:link b,
   .gs-imageResult a.gs-title:link,
   .gs-imageResult a.gs-title:link b { color: #0568CD; }
   .gs-webResult.gs-result a.gs-title:visited,
   .gs-webResult.gs-result a.gs-title:visited b,
   .gs-imageResult a.gs-title:visited,
   .gs-imageResult a.gs-title:visited b { color: #0568CD; }
   .gs-webResult.gs-result a.gs-title:hover,
   .gs-webResult.gs-result a.gs-title:hover b,
   .gs-imageResult a.gs-title:hover,
   .gs-imageResult a.gs-title:hover b { color: #0568CD; }
   .gs-webResult.gs-result a.gs-title:active,
   .gs-webResult.gs-result a.gs-title:active b,
   .gs-imageResult a.gs-title:active,
   .gs-imageResult a.gs-title:active b { color: #0568CD; }
   .gsc-cursor-page { color: #0568CD; }
   a.gsc-trailing-more-results:link { color: #0568CD; }
   .gs-webResult .gs-snippet,
   .gs-imageResult .gs-snippet,
   .gs-fileFormatType { color: #5F6A73; }
   .gs-webResult div.gs-visibleUrl,
   .gs-imageResult div.gs-visibleUrl { color: #5F6A73; }
   .gs-webResult div.gs-visibleUrl-short { color: #5F6A73; }
   .gs-webResult div.gs-visibleUrl-short { display: none; }
   .gs-webResult div.gs-visibleUrl-long { display: block; }
   .gs-promotion div.gs-visibleUrl-short { display: none; }
   .gs-promotion div.gs-visibleUrl-long { display: block; }
   .gsc-cursor-box { border-color: #FFFFFF; }
   .gsc-results .gsc-cursor-box .gsc-cursor-page {
      border-color: #999999;
      background-color: #FFFFFF;
      color: #0568CD;
   }
   .gsc-results .gsc-cursor-box .gsc-cursor-current-page {
      border-color: #999999;
      background-color: #999999;
      color: #0568CD;
   }
   .gsc-webResult.gsc-result.gsc-promotion {
      border-color: #D2D6DC;
      background-color: #D0D1D4;
   }
   .gsc-completion-title { color: #0568CD; }
   .gsc-completion-snippet { color: #5F6A73; }
   .gs-promotion a.gs-title:link,
   .gs-promotion a.gs-title:link *,
   .gs-promotion .gs-snippet a:link { color: #0066CC; }
   .gs-promotion a.gs-title:visited,
   .gs-promotion a.gs-title:visited *,
   .gs-promotion .gs-snippet a:visited { color: #0066CC; }
   .gs-promotion a.gs-title:hover,
   .gs-promotion a.gs-title:hover *,
   .gs-promotion .gs-snippet a:hover { color: #0066CC; }
   .gs-promotion a.gs-title:active,
   .gs-promotion a.gs-title:active *,
   .gs-promotion .gs-snippet a:active { color: #0066CC; }
   .gs-promotion .gs-snippet,
   .gs-promotion .gs-title .gs-promotion-title-right,
   .gs-promotion .gs-title .gs-promotion-title-right *  { color: #333333; }
   .gs-promotion .gs-visibleUrl,
   .gs-promotion .gs-visibleUrl-short { color: #5F6A73; }
   </style>
</center>
</p>
&nbsp;

<div id="mainmenu">
<div class="text">

 <div class="tabs">
   <ul class="tablist">
   <li><a href="../index.html"><span>Home</span></a>
   <li><a href="../overview.html"><span>Overview</span></a>
   <li><a href="../html/index.html"><span>Class Documentation</span></a>
   <li><a href="../fformats.html"><span>File Formats</span></a>
   <li><a href="../tutorial.html"><span>Tutorial</span></a>
   <li class="current"><a href="../demos.html"><span>Demo Codes</span></a>
 </div>

 </div>
 </div>

&nbsp;
<p>
<h2>Solid and Structural Mechanics Demo 5: A planar truss</h2>

<p><table border="2" cellpadding="2" cellspacing="0" >
<tr>
<td align="center" width="35"><a href="beam.html"><img src="../im/backward.gif" border="0"></a></td>
<td align="center" width="35"><a href="../demos.html"><img src="../im/top.gif" border="0"></a></td>
<td align="center" width="35"><a href="tiff2.html"><img src="../im/forward.gif" border="0"></a></td>
</tr>
</table></p>

<p>
<SPAN class=TEXT>
This code models an assembly of elastic bars subject to elongation and compression. The libray 
<span class=LOGO>OFELI</span> contains the class
<span class=VAR><a href="../html/classOFELI_1_1Bar2DL2.html">Bar2DL2</a></span> that handles
elastic planar with 2 degrees of freedom for each node that are <span class=VAR>x</span> and
<span class=VAR>y</span> displacements at nodes.
</SPAN>

<ul type=square>
<li><SPAN class=TEXT>We start by defining an instance of class <span class=VAR>
<a href="../html/classOFELI_1_1IPF.html">IPF</a></span> to deal with project data.
We extract useful information from this instance: An output flag to deal with output level
and a save flag to say if the solution is to be saved in file. We then construct the 
<span class=VAR><a href="../html/classOFELI_1_1Mesh.html">Mesh</a></span> and the 
<span class=VAR><a href="../html/classOFELI_1_1Prescription.html">Prescription</a></span> instances.
<p><table bgcolor="#e0f8f7" border="1" frame=box rules=none width=700>
<tr><td>
<pre><font color="blue" size=3>   IPF data("truss",argv[1]);
   int output_flag = data.getOutput();
   int save_flag = data.getSave();
   Mesh ms(data.getMeshFile());
   Prescription p(ms,data.getDataFile());
   Mesh ms(data.getMeshFile());
   Prescription p(ms,data.getDataFile());
</font></pre>
</td></tr></table>
</SPAN></p>

<li><SPAN class=TEXT>We declare an instance of class <span class=var><a href="../html/classOFELI_1_1SkSMatrix.html">SkSMatrix&lt;double&gt;</a></span>
to store the stiffness matrix. Then the vectors <span class=VAR>bc</span> and <span class=VAR>bf</span>
are declared to contain boundary conditions and loads respectively. We fill these vectors by 
using the class <span class=VAR><a href="../html/classOFELI_1_1Prescription.html">Prescription</a></span>.
We finally use a <span class=VAR><a href="../html/classOFELI_1_1Vect.html">Vect&lt;double&gt;</a></span>
instance that contains the right-hand side and later, the solution.
The bar class needs to provide the section of the bar. This is read from the project file.
<p><table bgcolor="#e0f8f7" border="1" frame=box rules=none width=700>
<tr><td>
<pre><font color="blue" size=3>   SkSMatrix&lt;double> A(ms);
   Vect&lt;double&gt; bc(ms), bf(ms);
   p.get(BOUNDARY_CONDITION,bc);
   p.get(POINT_FORCE,bf);
   Vect&lt;double&gt; b(bf);
   double section = data.getDouble("section");
</font></pre>
</td></tr></table>
</SPAN></p>

<li><SPAN class=TEXT>The global matrix and right-hand side are filled
by looping over elements. For each element, an instance of class 
<span class=VAR><a href="../html/classOFELI_1_1Bar2DL2.html">Bar2DL2</a></span>
is considered. For each element, we add the stiffness contribution and then assemble 
the local matrix into the global one.
<p><table bgcolor="#e0f8f7" border="1" frame=box rules=none width=700>
<tr><td>
<pre><font color="blue" size=3>   MeshElements(ms) {
      Bar2DL2 eq(theElement,section);
      eq.Stiffness();
      eq.ElementAssembly(A);
   }

</font></pre>
</td></tr></table>
</SPAN></p>

<li><SPAN class=TEXT>Boundary conditions are enforces by the penalty method.
Then the resulting linear system is solved by factorization and backsubstitution.
<p><table bgcolor="#e0f8f7" border="1" frame=box rules=none width=700>
<tr><td>
<pre><font color="blue" size=3>   A.Prescribe(b);
   A.solve(b);
</font></pre>
</td></tr></table>
</SPAN></p>

<li><SPAN class=TEXT>A last step consists here in computing the deformed structure by using
the function <span class=VAR><a href="../html/group__Mesh.html#g2d92b1248fa3264a3509f90872e0ec29">DeformMesh</a></span>.
We then store the solution in appropriate file.
<p><table bgcolor="#e0f8f7" border="1" frame=box rules=none width=700>
<tr><td>
<pre><font color="blue" size=3>   IOField pf(data.getMeshFile(),data.getPlotFile(),ms,IOField::OUT);
   pf.put(b);
   DeformMesh(ms,b,40);
</font></pre>
</td></tr></table>
</SPAN>
</ul></p>

&nbsp;&nbsp;
<h2>An example</h2>

<SPAN class=TEXT>
Let us run this program with the data presented in the following project file:
<p><table bgcolor="#e0f8f7" border="1" frame=box rules=none width=700>
<tr><td>
<pre><font color="blue" size=3><?xml version="1.0" encoding="ISO-8859-1" ?>
&lt;OFELI_File&gt;
&lt;info&gt;
   &lt;title /&gt;
   &lt;date /&gt;
   &lt;author /&gt;
&lt;/info&gt;
&lt;Project name="tower"&gt;
   &lt;mesh_file value="tower.dat"/&gt;
   &lt;verbose value="1"/&gt;
   &lt;output value="1"/&gt;
   &lt;save value="1"/&gt;
   &lt;plot value="1"/&gt;
   &lt;init value="1"/&gt;
   &lt;parameter label="section" value="0.005"/&gt;
   &lt;plot_file value="tower1.d"/&gt;
&lt;/Project&gt;

&lt;Mesh dim="2" nb_dof="2"&gt;
   &lt;Nodes&gt;
      0.00000000e+00      0.00000000e+00    11         6.00000000e+00      0.00000000e+00    11
      3.00000000e+00      1.50000000e+00     0         0.00000000e+00      3.00000000e+00     0
      6.00000000e+00      3.00000000e+00     0         3.00000000e+00      4.50000000e+00     0
      0.00000000e+00      6.00000000e+00     0         6.00000000e+00      6.00000000e+00     0
      3.00000000e+00      7.50000000e+00     0         0.00000000e+00      9.00000000e+00     0	  
      6.00000000e+00      9.00000000e+00     0         3.00000000e+00      1.05000000e+01     0
      0.00000000e+00      1.20000000e+01     0         6.00000000e+00      1.20000000e+01     0
      3.00000000e+00      1.50000000e+01     0   
   &lt;/Nodes&gt;
   &lt;Elements shape="line"  nodes="2"&gt;
       1       2       1          1       3       1          2       3       1
       3       4       1          3       5       1          1       4       1
       2       5       1          4       5       1          4       6       1
       5       6       1          6       7       1          6       8       1
       4       7       1          5       8       1          7       8       1
       7       9       1          8       9       1          9      10       1
       9      11       1          7      10       1          8      11       1
      10      11       1         10      12       1         11      12       1
      12      13       1         12      14       1         10      13       1
      11      14       1         13      14       1         13      15       1   
      14      15       1   
   &lt;/Elements&gt;
   &lt;Material&gt;
        1   Iron
   &lt;/Material&gt;
&lt;/Mesh&gt;

&lt;Prescription&gt;
   &lt;PointForce y="15.0" dof="1"&gt;5.0&lt;/PointForce&gt;
&lt;/Prescription&gt;
&lt;/OFELI_File&gt;
</td></tr></table></p>

<p>
The mesh here above describes a tower. Note that the node with coordinate <span class=VAR>y=15</span>
is submitted to a concentrated load equal to <span class=TT>15.0</span>.

<p><table align="center" border="2" cellpadding="2" cellspacing="0" >
<tr>
<td align="center" width="35"><a href="beam.html"><img src="../im/backward.gif" border="0"></a></td>
<td align="center" width="35"><a href="../demos.html"><img src="../im/top.gif" border="0"></a></td>
<td align="center" width="35"><a href="tiff2.html"><img src="../im/forward.gif" border="0"></a></td>
</tr>
</table>

&nbsp;
<div id="foot_bar">
        Copyright &copy; 1998-2018 Rachid Touzani&nbsp;
</div>

</body>
</html>
